Erasure coding, often referred to as Reed-Solomon coding, is an object-level, parity-based scheme for preventing data loss resulting from storage system failure. In erasure coding, data is partitioned into k data chunks, which are encoded into m parity chunks and both data and parity chunks are stored across distributed storage subsystems called failure domains. In systems that use this type of systematic coding, data can be read directly without reconstruction as it is stored as clear data.
Despite the advantages of erasure coding, there are inefficiencies in the modes (normal and degraded) in which it operates. For example, during a partial data update in normal mode, an erasure coding system may process more inputs/outputs (“I/O”) to update parity chunks than for data chunks, which causes I/O latency for parity and increased network traffic. As another example, in degraded mode, data reconstruction causes increased network traffic and I/O latency may increase due to multiple parity updates being made for each data write.
In view of these deficiencies of traditional erasure-encoded systems, the instant disclosure identifies and addresses a need for systems and methods for caching in an erasure-coded system.